package com.ruoyi.server.api.favorites.service;

import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.server.api.favorites.domain.Favorites;
import com.ruoyi.server.api.imgmanage.domain.ImgManage;

import java.math.BigInteger;
import java.util.List;
import java.util.Map;

/**
 * @ClassName FavoritesService
 * @Description 点赞收藏相关的service接口
 * @Author zsc
 * @Date 2024/10/16 14:32
 */
public interface FavoritesService {
    
    /**
    * @Author zsc
    * @Description 点赞图片id存储到Redis 或 从Redis移除
    * @Date 2024/10/21 14:12
    * @Return boolean
    * @param favorites
    */
    AjaxResult saveOrDelUserImageLike(Favorites favorites);

    /**
    * @Author zsc
    * @Description 收藏图片id存储到Redis 或 从Redis移除
    * @Date 2024/10/21 14:21
    * @Return boolean
    * @param favorites
    */
    AjaxResult saveOrDelUserImageCol(Favorites favorites);

    /**
    * @Author zsc
    * @Description 获取用户点赞图片
    * @Date 2024/10/21 14:28
    * @Return java.util.List<java.lang.Long>
    * @param userId
    */
    List<Long> getUserImageLikeById(BigInteger userId);

    /**
    * @Author zsc
    * @Description 获取用户收藏图片
    * @Date 2024/10/21 14:32
    * @Return java.util.List<java.lang.Long>
    * @param userId
    */
    List<Long> getUserImageCol(BigInteger userId);

    /**
    * @Author zsc
    * @Description 根据ids获取所有图片点赞数量
    * @Date 2024/10/21 14:35
    * @Return java.util.Map<java.lang.Long,java.lang.Integer>
    * @param ids
    */
    List<Map<Long, Integer> > getLikeCounts(Long[] ids);

    /**
    * @Author zsc
    * @Description 根据ids获取所有图片收藏数量
    * @Date 2024/10/21 14:39
    * @Return java.util.Map<java.lang.Long,java.lang.Integer>
    * @param ids
    */
    Map<Long, Integer> getColCounts(Long[] ids);

    /**
    * @Author zsc
    * @Description 根据id查询点赞列表
    * @Date 2024/10/23 16:41
    * @Return void
    * @param id
    */
    AjaxResult selectLikeImgById(BigInteger id);

    /**
    * @Author zsc
    * @Description 根据id查询收藏列表
    * @Date 2024/10/24 11:14
    * @Return java.util.List<com.ruoyi.server.api.imgmanage.domain.ImgManage>
    * @param id
    */
    AjaxResult selectColImgById(BigInteger id);
}
